export default class Model {
  constructor(connection, schema, name) {
    this.init(connection, schema, name)
  }
  init(connection, schema, name) {
    this.name = name
    this.schema = schema
    // model( 单数的表名, , 表名)  一般使用方法表都是复数 =>  model( 单数的表名, ,)
    this.model = connection.model(`${name}`, this.schema, this.name)
  }
  find(param = {}) {
    return new Promise(async (resolve, reject) => {
      this.model.find(param, (err, record) => {
        if (err) {
          reject(false)
        } else {
          resolve(record)
        }
      })
    })
  }
  insert(data) {
    return new Promise((resolve, reject) => { 
      let obj = new this.model(data)
      obj.save((err) => {
        if (err) {
          reject(false)
        } else {
          console.log(data)
          resolve(data)
        }
      })
     }) 
  }
  // 插入或更新
  insertOrUpdate(data) {
    return new Promise((resolve, reject) => {
      this.model.findOne(data, (err, record) => {
        if (err) {
          reject(false)
        } else {
          // 不存在
          if (record) {
            // 创建
            let user = new this.model(data)
            user.save((err) => {
              if (err) {
                reject(false)
              } else {
                resolve(data)
              }
            })
          } else {
            // 更新
            this.model.findOneAndUpdate(data, data, {
              new: true,
              upsert: true
            }, (err, res) => {
              if (err) {
                reject(false)
              } else {
                resolve(res)
              }
            })
          }
        }
      })
    })
  }
}